package allwe.leetcode;

public class NO4 {

    public static void main(String[] args) {
        int[] nums = new int[]{0,0,1,1,1,1,2,3,3};
        int k = removeDuplicates(nums);
        System.out.println(k);
        System.out.println("==============");
        for (int i = 0; i < k; i++) {
            System.out.println(nums[i]);
        }

    }

    /**
     * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使得出现次数超过两次的元素只出现两次 ，返回删除后数组的新长度。
     * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
     */
    public static int removeDuplicates(int[] nums) {
        // 慢指针从头开始,相同次数计为 1
        int index = 0,count = 1;
        // 快指针从第二位开始
        for (int i = 1; i < nums.length; i++) {
            if (nums[index] == nums[i]) {
                count++;
                // 只有count不超过2时，慢指针进一步
                if (count < 3) {
                    nums[++index] = nums[i];
                }
            } else {
                nums[++index] = nums[i];
                count = 1;
            }
        }
        // 下标位置+1
        return index + 1;
    }
}
